A data stream is a sequence of data items conveying information. For example, a data stream may represent a sequence of requests from a uniquely identified user, or a data stream may convey information representing the performance of a computing system responding to requests. This information may include, for example, the computing system's response time, load, availability, memory usage, response codes, error codes, packet loss, retransmission, and throughput.
A data stream may be analyzed to produce useful information. For example, a data stream representing a computing system's response time for each request received by the computing system (i.e., the time elapsed between the computing system receiving a request and responding to it) may be analyzed to generate metrics for evaluating the performance of the computing system.
Typically, service providers monitor the status of their networks to ensure that their operational policies (e.g., performance, availability, security) are fulfilled, and to identify and resolve issues that may arise. Data stream analysis is particularly useful in this context. For example, a service provider may determine that it is not satisfying a Service Level Agreement specifying a certain maximum average response time by analyzing a data stream or data streams representing the response time for each service request received.
In conventional monitoring systems, every data item in an analyzed data stream is processed. This approach requires significant resources, and these resources often become overwhelmed as the rate at which the data items are produced by computing systems exceeds the processing capacity of the monitoring system. In the example above, the data production rate for a data stream representing the response time for each request will vary based on the rate at which requests are received by the computing system. To illustrate this point, consider a first computing system that receives ten requests per second and a second computing system that receives one hundred requests per second. The data stream data production rate of the second computing system is ten times the data production rate of the first computing system.
When a monitoring system reaches its processing capacity, it is common for the monitoring system to enter a deferred delivery mode by reducing the rate at which data items are delivered to the monitoring system for processing. This approach often permits the monitoring system to continue processing every data item in the analyzed data stream without becoming overwhelmed.